﻿var id_provincia, id_distrito;
$(document).ready(main);


function main() {

    $("#botonRegistro").click(registrarProveedor);
    $("#botonBuscar").click(buscarProveedor);
    $("#botonCancelar").click(menuProveedor);
    $("#EliminarBoton").click(eliminarProveedor);
    $("#EliminarBoton").hide();
    $("#ModificarBoton").hide();
    cargarDepartamentos();
}

function menuProveedor() {
    window.history.back();
}


function refrescar() {

    document.getElementById("RazonSocial").value = "";
    document.getElementById("RUC").value = "";

    jQuery("#Departamento option").each(function () {
        jQuery(this).attr("selected", "selected");
        if (jQuery(this).val() == "") {
            jQuery(this).attr("selected", "selected");
            return false;
        }
    });

    jQuery("#Provincia option").each(function () {
        jQuery(this).attr("selected", "selected");
        if (jQuery(this).val() == "") {
            jQuery(this).attr("selected", "selected");
            return false;
        }
    });

    jQuery("#Distrito option").each(function () {
        jQuery(this).attr("selected", "selected");
        if (jQuery(this).val() == "") {
            jQuery(this).attr("selected", "selected");
            return false;
        }
    });

    document.getElementById("Direccion").value = "";
    document.getElementById("Telefono").value = "";
    document.getElementById("Cargo").value = "";
    document.getElementById("Nombre").value = "";
    document.getElementById("Correo").value = "";
    document.getElementById("TelefonoContacto").value = "";

}

function cargarDepartamentos() {
    var enviar = {
        Nombre: "",
        Id_Departamento: ""
    }

    console.log(enviar);

    var jsonData = JSON.stringify(enviar);

    $.ajax({
        type: "POST",
        data: jsonData,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        url: "cargarDepartamentos",
        success: function (data) {

            console.log(data);

            var lista = data.listaDepartamentoPeru;

            $("#Departamento").find('option').remove().end().append("<option></option>");
            $.each(lista, function (i, item) {
                $("#Departamento").append("<option value = \"" + item.Id_Departamento + "\">" + item.Nombre + "</option>");
            });

            $("#DepartamentoProveedor").find('option').remove().end().append("<option></option>");
            $.each(lista, function (i, item) {
                $("#DepartamentoProveedor").append("<option value = \"" + item.Id_Departamento + "\">" + item.Nombre + "</option>");
            });
        }
    });
}

function cargarProvincias() {

    var enviar = {
        Nombre: "",
        Id_Departamento: $("#Departamento").val(),
        Id_Provincia: ""
    }

    console.log(enviar);

    var jsonData;

    jsonData = JSON.stringify(enviar);

    $.ajax({
        type: "POST",
        data: jsonData,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        url: "cargarProvincias",
        success: function (data) {

            console.log(data);

            var lista = data.listaProvinciaPeru;

            $("#Provincia").find('option').remove().end().append("<option></option>");
            $.each(lista, function (i, item) {
                $("#Provincia").append("<option value = \"" + item.Id_Provincia + "\">" + item.Nombre + "</option>");
            });
        }
    });
}

function cargarProvinciasProveedor() {

    var enviar = {
        Nombre: "",
        Id_Departamento: $("#DepartamentoProveedor").val(),
        Id_Provincia: ""
    }

    console.log(enviar);

    var jsonData;

    jsonData = JSON.stringify(enviar);

    $.ajax({
        type: "POST",
        data: jsonData,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        url: "cargarProvincias",
        success: function (data) {

            console.log(data);

            var lista = data.listaProvinciaPeru;

            $("#ProvinciaProveedor").find('option').remove().end().append("<option selected=\"selected\"></option>");
            $.each(lista, function (i, item) {
                $("#ProvinciaProveedor").append("<option value = \"" + item.Id_Provincia + "\">" + item.Nombre + "</option>");
            });

            jQuery("#ProvinciaProveedor option").each(function () {
                jQuery(this).attr("selected", "selected");
                if (jQuery(this).val() == id_provincia) {
                    jQuery(this).attr("selected", "selected");
                    return false;
                }
            });
            cargarDistritosProveedor();
        }
    });
}

function cargarDistritos() {

    var enviar = {
        Nombre: "",
        Id_Provincia: $("#Provincia").val(),
        Id_Distrito: ""
    }


    console.log(enviar);

    var jsonData = JSON.stringify(enviar);

    $.ajax({
        type: "POST",
        data: jsonData,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        url: "cargarDistritos",
        success: function (data) {

            console.log(data);

            var lista = data.listaDistritoPeru;

            $("#Distrito").find('option').remove().end().append("<option></option>");
            $.each(lista, function (i, item) {
                $("#Distrito").append("<option value = \"" + item.Id_Distrito + "\">" + item.Nombre + "</option>");
            });
        }
    });
}

function cargarDistritosProveedor() {

    var enviar = {
        Nombre: "",
        Id_Provincia: $("#ProvinciaProveedor").val(),
        Id_Distrito: ""
    }


    console.log(enviar);

    var jsonData = JSON.stringify(enviar);

    $.ajax({
        type: "POST",
        data: jsonData,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        url: "cargarDistritos",
        success: function (data) {

            console.log(data);

            var lista = data.listaDistritoPeru;

            $("#DistritoProveedor").find('option').remove().end().append("<option selected=\"selected\"></option>");
            $.each(lista, function (i, item) {
                $("#DistritoProveedor").append("<option value = \"" + item.Id_Distrito + "\">" + item.Nombre + "</option>");
            });

            jQuery("#DistritoProveedor option").each(function () {
                jQuery(this).attr("selected", "selected");
                if (jQuery(this).val() == id_distrito) {
                    jQuery(this).attr("selected", "selected");
                    return false;
                }
            });

        }
    });
}

function vaciarErrores(){
    document.getElementById("errorRazonSocial").innerHTML = "";
    document.getElementById("errorRUC").innerHTML = "";
    document.getElementById("errorDireccion").innerHTML = "";
    document.getElementById("errorTelefono").innerHTML = "";
    document.getElementById("errorCargo").innerHTML = "";
    document.getElementById("errorNombre").innerHTML = "";
    document.getElementById("errorCorreo").innerHTML = "";
    document.getElementById("errorTelefonoContacto").innerHTML = "";
}


function registrarProveedor() {

    var enviarsela = {
        RazonSocial: $("#RazonSocial").attr("value"),
        RUC: $("#RUC").attr("value"),
        Id_Departamento: $("#Departamento").val(),
        Id_Provincia: $("#Provincia").val(),
        Id_Distrito: $("#Distrito").val(),
        Direccion: $("#Direccion").attr("value"),
        Telefono: $("#Telefono").attr("value"),
        Cargo_Contacto: $("#Cargo").attr("value"),
        Contacto: $("#Nombre").attr("value"),
        Correo: $("#Correo").attr("value"),
        Telefono_Contacto: $("#TelefonoContacto").attr("value"),
        Observaciones: $("#Observacion").attr("value")
    }

    fv = new formValidator();
    vaciarErrores();

    if (fv.isEmpty(document.getElementById("RazonSocial").value)) {
        fv.raiseError("");
        document.getElementById("errorRazonSocial").innerHTML = "";
    }
    else {
        if (!fv.isAlphaNumeric(document.getElementById("RazonSocial").value)) {
            fv.raiseError("");
            document.getElementById("errorRazonSocial").innerHTML = "Solo Números y Letras";
        }
    }
    if (fv.isEmpty(document.getElementById("RUC").value)) {
        fv.raiseError("");
        document.getElementById("errorRUC").innerHTML = "";
    }
    else {
        if (!fv.isNumber(document.getElementById("RUC").value)) {
            fv.raiseError("");
            document.getElementById("errorRUC").innerHTML = "Solo Números";
        }
    }
    if (!fv.isSelectedSelect(document.getElementById("Departamento"))) {
        fv.raiseError("");
    }
    if (!fv.isSelectedSelect(document.getElementById("Provincia"))) {
        fv.raiseError("");
    }
    if (!fv.isSelectedSelect(document.getElementById("Distrito"))) {
        fv.raiseError("");
    }
    if (fv.isEmpty(document.getElementById("Direccion").value)) {
        fv.raiseError("");
        document.getElementById("errorDireccion").innerHTML = "";
    }
    else {
        if (!fv.isAlphaNumeric(document.getElementById("Direccion").value)) {
            fv.raiseError("");
            document.getElementById("errorDireccion").innerHTML = "Solo Números y Letras";
        }
    }

    if (fv.isEmpty(document.getElementById("Telefono").value)) {
        fv.raiseError("");
        document.getElementById("errorTelefono").innerHTML = "";
    }
    else {
        if (!isNumber(document.getElementById("Telefono").value)) {
            fv.raiseError("");
            document.getElementById("errorTelefono").innerHTML = "Solo Números";
        }
    }

    if (fv.isEmpty(document.getElementById("Cargo").value)) {
        document.getElementById("errorCargo").innerHTML = "";
    }
    else {
        if (!fv.isAlphabetic(document.getElementById("Cargo").value)) {
            fv.raiseError("");
            document.getElementById("errorCargo").innerHTML = "Solo Letras";
        }
    }

    if (fv.isEmpty(document.getElementById("Nombre").value)) {
        fv.raiseError("Nombre");
        document.getElementById("errorNombre").innerHTML = "";
    }
    else {
        if (!fv.isAlphabetic(document.getElementById("Nombre").value)) {
            fv.raiseError("");
            document.getElementById("errorNombre").innerHTML = "Solo Letras";
        }
    }

    if (fv.isEmpty(document.getElementById("Correo").value)) {
        fv.raiseError("Correo");
        document.getElementById("errorCorreo").innerHTML = "";
    }
    else {
        if (!fv.isEmailAddress(document.getElementById("Correo").value)) {
            fv.raiseError("");
            document.getElementById("errorCorreo").innerHTML = "Ingrese un correo valido";
        }
    }

    if (fv.isEmpty(document.getElementById("TelefonoContacto").value)) {
        document.getElementById("errorTelefonoContacto").innerHTML = "";
    }
    else {
        if (!isNumber(document.getElementById("TelefonoContacto").value)) {
            fv.raiseError("");
            document.getElementById("errorTelefonoContacto").innerHTML = "Solo Números";
        }
    }

    if (fv.numErrors() < 1) {

        console.log(enviarsela);

        var jsonData = JSON.stringify(enviarsela);

        $.ajax({
            type: "POST",
            data: jsonData,
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            url: "registrarProveedor",
            success: llegadaRegistro
        });
        return true;
    }
    else {
        fv.displayErrors();
        return false;
    }
}

function llegadaRegistro(data) {
    window.history.back();
    alert(data.me);
}



function buscarProveedor() {

    var enviar = {
        RazonSocial: $("#RazonSocial").attr("value"),
        RUC: $("#RUC").attr("value"),
        Id_Departamento: $("#Departamento").val(),
        Id_Provincia: $("#Provincia").val(),
        Id_Distrito: $("#Distrito").val(),
        Direccion: $("#Direccion").attr("value"),
        Telefono: $("#Telefono").attr("value"),
        Cargo_Contacto: $("#Cargo").attr("value"),
        Contacto: $("#Nombre").attr("value"),
        Correo: $("#Correo").attr("value"),
        Telefono_Contacto: $("#TelefonoContacto").attr("value")
    }

    var jsonData = JSON.stringify(enviar);

    $.ajax({
        type: "POST",
        data: jsonData,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        url: "buscarProveedor",
        beforeSend: esperarLista(),
        success: llegadaLista
    });
}

function esperarLista() { 

}
function llegadaLista(data) {
    console.log(data);

    var lista = data.listaProveedor;


    var escritor = "";

    if (lista.length > 0) {
        escritor += "<table><thead><tr><th></th>" +
                                      "<th>RUC</th>" +
                                      "<th>Razón Social</th>" +
                                      "<th style=\"display:none\">Id_Departamento</th>" +
                                      "<th style=\"display:none\">Id_Provincia</th>" +
                                      "<th style=\"display:none\">Id_Distrito</th>" +
                                      "<th style=\"display:none\">Dirección</th>" +
                                      "<th>Teléfono</th>" +
                                      "<th style=\"display:none\">Cargo</th>" +
                                      "<th>Contacto</th>" +
                                      "<th>Correo</th>" +
                                      "<th>Telefono Contacto</th>" +
                                      "<th style=\"display:none\">Observaciones</th>" 
                                      "<th style=\"display:none\">Id_Edificio</th>"
                                      
        "</tr></thead>";

        escritor += "<tbody id='resultados'>";

        $.each(lista, function (i, item) {

            escritor += "<tr>";
            escritor += '<td>' + "<input id=" + "\"RadioButton1\" " + "name=" + "\"R1\" " + "type=" + "\"radio\" " + "value=" + "\"1\"" + "/>" + '</td>';
            escritor += "<td>" + item.RUC + "</td>";
            escritor += "<td>" + item.RazonSocial + "</td>";
            escritor += "<td style=\"display:none\">" + item.Id_Departamento + "</td>";
            escritor += "<td style=\"display:none\">" + item.Id_Provincia + "</td>";
            escritor += "<td style=\"display:none\">" + item.Id_Distrito + "</td>";
            escritor += "<td style=\"display:none\">" + item.Direccion + "</td>";
            escritor += "<td>" + item.Telefono + "</td>";
            escritor += "<td style=\"display:none\">" + item.Cargo_Contacto + "</td>";
            escritor += "<td>" + item.Contacto + "</td>";
            escritor += "<td><a href=\"mailto:" + item.Correo + "\">" + item.Correo + "</a></td>";
            escritor += "<td>" + item.Telefono_Contacto + "</td>";
            escritor += "<td style=\"display:none\">" + item.Observaciones + "</td>";
            escritor += "<td style=\"display:none\">" + item.Id_Proveedor + "</td>"
            escritor += "</tr>";
        });

        escritor += "</tbody>";
        escritor += "</table>";

        $("#EliminarBoton").show();
        $("#ModificarBoton").show();

        $("#tablaDinamica").html(escritor);

        if (lista.length > 0) {
            $("#holder").show();
            $("#holder").jPages({
                containerID: "resultados",
                perPage: 10,
                delay: 20,
                startPage: 1,
                midRange: 3,
                animation: "flipInY"
            });

        }
    }
    else {
        escritor += "<p>No se encontró ninguna coincidencia</p>";
        $("#tablaDinamica").html(escritor);
        $("#holder").hide();
        $("#EliminarBoton").hide();
        $("#ModificarBoton").hide();
    }
}


function eliminarProveedor() {
    if ($("input:radio[name='R1']").is(":checked")) {
        var id_proveedor, razonsocial;
        $("input:radio[name='R1']:checked").parents("tr").children("td").each(function (index2) {
            switch (index2) {
                case 2:
                    razonsocial = $(this).text();
                    break;
                case 14:
                    id_proveedor = $(this).text();
                    break;
            }
        })

        var question = confirm("Desea eliminar el objeto seleccionado");

        if (question != 0) {
            var enviar = {
                Id_Proveedor: id_proveedor,
                RazonSocial: razonsocial
            }

            var jsonData = JSON.stringify(enviar);

            $.ajax({
                type: "POST",
                data: jsonData,
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                url: "eliminarProveedor",
                success: llegadaEliminar
            });
        }
    }
    else {
        alert("Debe seleccionar una fila");
    }  
}

function llegadaEliminar(data) {
    alert(data.me);
    buscarProveedor();
}


$(function () {
    var nameB = $("#nameB"),
            emailB = $("#emailB"),
            passwordB = $("#passwordB"),
            allFields = $([]).add(nameB).add(emailB).add(passwordB),
            tips = $(".validateTips");

    function updateTips(t) {
        tips
                .text(t)
                .addClass("ui-state-highlight");
        setTimeout(function () {
            tips.removeClass("ui-state-highlight", 1500);
        }, 500);
    }
    $("#dialog-form").dialog({
        autoOpen: false,
        height: 600,
        width: 1000,
        modal: true,
        buttons: {
            Aceptar: function () {
                var enviar = {
                    Id_Proveedor: $("#Id_Proveedor").attr("value"),
                    RazonSocial: $("#RazonSocialProveedor").attr("value"),
                    RUC: $("#RUCProveedor").attr("value"),
                    Id_Departamento: $("#DepartamentoProveedor").val(),
                    Id_Provincia: $("#ProvinciaProveedor").val(),
                    Id_Distrito: $("#DistritoProveedor").val(),
                    Direccion: $("#DireccionProveedor").attr("value"),
                    Telefono: $("#TelefonoProveedor").attr("value"),
                    Cargo_Contacto: $("#CargoProveedor").attr("value"),
                    Contacto: $("#NombreProveedor").attr("value"),
                    Correo: $("#CorreoProveedor").attr("value"),
                    Telefono_Contacto: $("#TelefonoContactoProveedor").attr("value"),
                    Observaciones: $("#ObservacionProveedor").attr("value")
                }

                fv = new formValidator();
                vaciarErrores();

                if (fv.isEmpty(document.getElementById("RazonSocialProveedor").value)) {
                    fv.raiseError("");
                    document.getElementById("errorRazonSocial").innerHTML = "";
                }
                else {
                    if (!fv.isAlphaNumeric(document.getElementById("RazonSocialProveedor").value)) {
                        fv.raiseError("");
                        document.getElementById("errorRazonSocial").innerHTML = "Solo Números y Letras";
                    }
                }
                if (fv.isEmpty(document.getElementById("RUCProveedor").value)) {
                    fv.raiseError("");
                    document.getElementById("errorRUC").innerHTML = "";
                }
                else {
                    if (!fv.isNumber(document.getElementById("RUCProveedor").value)) {
                        fv.raiseError("");
                        document.getElementById("errorRUC").innerHTML = "Solo Números";
                    }
                }
                if (!fv.isSelectedSelect(document.getElementById("DepartamentoProveedor"))) {
                    fv.raiseError("");
                }
                if (!fv.isSelectedSelect(document.getElementById("ProvinciaProveedor"))) {
                    fv.raiseError("");
                }
                if (!fv.isSelectedSelect(document.getElementById("DistritoProveedor"))) {
                    fv.raiseError("");
                }
                if (fv.isEmpty(document.getElementById("DireccionProveedor").value)) {
                    fv.raiseError("");
                    document.getElementById("errorDireccion").innerHTML = "";
                }
                else {
                    if (!fv.isAlphaNumeric(document.getElementById("DireccionProveedor").value)) {
                        fv.raiseError("");
                        document.getElementById("errorDireccion").innerHTML = "Solo Números y Letras";
                    }
                }

                if (fv.isEmpty(document.getElementById("TelefonoProveedor").value)) {
                    fv.raiseError("");
                    document.getElementById("errorTelefono").innerHTML = "";
                }
                else {
                    if (!isNumber(document.getElementById("TelefonoProveedor").value)) {
                        fv.raiseError("");
                        document.getElementById("errorTelefono").innerHTML = "Solo Números";
                    }
                }

                if (fv.isEmpty(document.getElementById("CargoProveedor").value)) {
                    document.getElementById("errorCargo").innerHTML = "";
                }
                else {
                    if (!fv.isAlphabetic(document.getElementById("CargoProveedor").value)) {
                        fv.raiseError("");
                        document.getElementById("errorCargo").innerHTML = "Solo Letras";
                    }
                }

                if (fv.isEmpty(document.getElementById("NombreProveedor").value)) {
                    fv.raiseError("Nombre");
                    document.getElementById("errorNombre").innerHTML = "";
                }
                else {
                    if (!fv.isAlphabetic(document.getElementById("NombreProveedor").value)) {
                        fv.raiseError("");
                        document.getElementById("errorNombre").innerHTML = "Solo Letras";
                    }
                }

                if (fv.isEmpty(document.getElementById("CorreoProveedor").value)) {
                    fv.raiseError("Correo");
                    document.getElementById("errorCorreo").innerHTML = "";
                }
                else {
                    if (!fv.isEmailAddress(document.getElementById("CorreoProveedor").value)) {
                        fv.raiseError("");
                        document.getElementById("errorCorreo").innerHTML = "Ingrese un correo valido";
                    }
                }

                if (fv.isEmpty(document.getElementById("TelefonoContactoProveedor").value)) {
                    document.getElementById("errorTelefonoContacto").innerHTML = "";
                }
                else {
                    if (!isNumber(document.getElementById("TelefonoContactoProveedor").value)) {
                        fv.raiseError("");
                        document.getElementById("errorTelefonoContacto").innerHTML = "Solo Números";
                    }
                }
                if (fv.numErrors() === 0) {
                    var jsonData = JSON.stringify(enviar);

                    $.ajax({
                        type: "POST",
                        data: jsonData,
                        dataType: "json",
                        contentType: "application/json; charset=utf-8",
                        url: "modificarProveedor",
                        success: function (data) {
                            alert(data.me);
                            buscarProveedor();
                        }
                    });

                    $(this).dialog("close");
                }
                else {
                    fv.displayErrors();
                }
            },
            Cancel: function () {
                $(this).dialog("close");
            }
        },
        close: function () {
            allFields.val("").removeClass("ui-state-error");
        }
    });

    $("#ModificarBoton").click(function () {
        if ($("input:radio[name='R1']").is(":checked")) {
            $("#dialog-form").dialog("open");
            var bValid = true;
            allFields.removeClass("ui-state-error");
            if (bValid) {
                if ($("input:radio[name='R1']:checked")) {
                    var id_proveedor, id_departamento, razonsocial, ruc, direccion, telefono, cargo, contacto, correo, telefono_contacto, observacion;
                    $("input:radio[name='R1']:checked").parents("tr").children("td").each(function (index2) {
                        switch (index2) {

                            case 1:
                                ruc = $(this).text();
                                break;
                            case 2:
                                razonsocial = $(this).text();
                                break;
                            case 3:
                                id_departamento = $(this).text();
                                break;
                            case 4:
                                id_provincia = $(this).text();
                                break;
                            case 5:
                                id_distrito = $(this).text();
                                break;
                            case 6:
                                direccion = $(this).text();
                                break;
                            case 7:
                                telefono = $(this).text();
                                break;
                            case 8:
                                cargo = $(this).text();
                                break;
                            case 9:
                                contacto = $(this).text();
                                break;
                            case 10:
                                correo = $(this).text();
                                break;
                            case 11:
                                telefono_contacto = $(this).text();
                                break;
                            case 12:
                                observacion = $(this).text();
                                break;
                            case 13:
                                id_proveedor = $(this).text();
                                break;
                        }
                    })



                    jQuery("#DepartamentoProveedor option").each(function () {
                        jQuery(this).attr("selected", "selected");
                        if (jQuery(this).val() == id_departamento) {
                            jQuery(this).attr("selected", "selected");
                            return false;
                        }
                    });

                    cargarProvinciasProveedor();

                    document.getElementById("Id_Proveedor").value = id_proveedor;

                    document.getElementById("RazonSocialProveedor").value = razonsocial;
                    document.getElementById("RUCProveedor").value = ruc;
                    document.getElementById("DireccionProveedor").value = direccion;
                    document.getElementById("TelefonoProveedor").value = telefono;
                    document.getElementById("CargoProveedor").value = cargo;
                    document.getElementById("NombreProveedor").value = contacto;
                    document.getElementById("CorreoProveedor").value = correo;
                    document.getElementById("TelefonoContactoProveedor").value = telefono_contacto;
                    document.getElementById("ObservacionProveedor").value = observacion;
                }
            }
        }
        else {
            alert("Debe seleccionar una fila");
        }
    });

});

















